package com.ftg.learn.chapter11;

import java.util.Arrays;

/**
 * @author KangJx
 * @date 2021/7/19
 */
public class Question1 {

//    有n个人围成一圈，顺序排号。从第一个人开始报数（从1到3报数），凡报到3的人退出圈子，问最后留下的数原来第几号的那位。
//    判断数组中有几个不重复的数 （比如 2 2 3 3 5 有3个不重复的数 2 3 5）（封装成公共方法） 不
      //家庭作业
//    得到数组中每一个数出现的次数（封装成公共方法）ex: {1,2,1,2,3,4,5} 1出现2次2出现2次 3 出现1次...

    public int q1(int[] arr){

        //死人标记 顺序排号 ，那么-1不会有，所以有-1表示已经杀了的人s
        int dead = -1;

        int deadNo = 0;

        //计数器 计录隔几位一杀
        int index= 0 ;

        for(int i = 0,len =arr.length;deadNo < len-1;i++){
            if(arr[i] != -1){
                index++;
            }
            if(index == 3){
                arr[i] = -1;
                deadNo++;
                System.out.println("第" + deadNo + "位被杀死的人的下标是" + i);
                index = 0;
            }
            if(i == len-1){
                i = -1;
            }
        }
        for(int i=0,len = arr.length;i<len;i++){
            if(arr[i] != -1){
                return i;
            }
        }
        return -1;
    }

    /**
     * 判断 一个数组中有几个不重复的数
     * @param arr
     * @return
     */
    public int q2(int[] arr){

        if(null == arr || arr.length == 0){
            return 0;
        }
        Arrays.sort(arr);
        //我认为数组长度是多少就有多少个不重复的数
        int max = arr.length;
        for(int i = 0;i < max;i++){
            for(int j = max-1;j > i;j--){
                if(arr[i] == arr[j]){
                    System.arraycopy(arr,j + 1,arr,j,arr.length - j - 1);
                    System.out.println(Arrays.toString(arr));
                    max--;
                }
           }
        }

        System.out.println("---------------"+max);
        for(int i = 0 ;i < max;i++){
            System.out.println(arr[i]);
        }

        return 0;
    }

}
